const sequelize = require('./db');
const { DataTypes } = require('sequelize');
const moment = require('moment');

module.exports = sequelize.define(
  'Student',
  {
    name: {
      type: DataTypes.STRING,
      allowNull: false,
    },
    birthday: {
      type: DataTypes.DATE,
      allowNull: false,
      get() {
        // get 访问器 不影响 数据库内容
        // 但范围这个字段的时候 返回 时间戳
        // this.getDataValue('birthday') 去获取这个 字段值
        return this.getDataValue('birthday').getTime();
      },
      // set() {
      //   // 通过模型实例去赋值 的时候 会 执行这个 方式
      // },
    },
    age: {
      // 虚拟字段  不存在数据库中
      type: DataTypes.VIRTUAL,
      get() {
        const now = moment.utc();
        const birth = moment.utc(this.birthday);
        return now.diff(birth, 'y'); //得到两个日期的年份的差异
      },
    },
    sex: {
      type: DataTypes.BOOLEAN,
      allowNull: false,
    },
    mobile: {
      type: DataTypes.STRING(11),
      allowNull: false,
    },
  },
  {
    createdAt: false,
    updatedAt: false,
    paranoid: true,
  }
);
